JavaBean
✒️ 2025-06-21 23:41 내용 수정
참고 자료 : wikipedia JavaBeans
JavaBean
Java 표준 규약을 따르는 데이터를 저장하거나 전달할 때 사용하는 객체
- 한 개 이상의 객체를 Bean이라는 표준 객체로 캡슐화한 것이다.
- JavaBean 규약
- 모든 Bean은 직렬화할 수 있어야 한다. (
java.io.Serializableinterface 구현) - 기본 생성자를 가져야 한다.
- 필드 멤버는
private으로 설정(캡슐화)해야 하며, 필드 접근은 getter/setter로 해야 한다.
- 모든 Bean은 직렬화할 수 있어야 한다. (
// Seriralizable 구현
public class User implements Serializable {
// 캡슐화를 위한 private field
private int id;
private String name;
private int age;
// 기본 생성자
public User() {}
// setter와 getter
public void setId(int id) {this.id = id;}
public void setName(String name) {this.name = name;}
public void setAge(int age) {this.age = age;}
public int getId() {return this.id;}
public String getName() {return this.name;}
public int getAge() {return this.age;}
}
- JavaBean을 사용하면 여러 JSP 페이지에서 Bean을 재사용하기 용이하고, JSP 액션 태그를 통해 데이터를 표시하기 쉽다.
- MVC 패턴에서 Model은 데이터를 처리하는 역할을 하며, JavaBean은 DTO의 영역에서 데이터를 저장 및 전달하는 역할을 담당한다.
<jsp:useBean id="user" class="com.example.User" scope="request" />
<jsp:setProperty name="user" property="name" value="park" />
<jsp:setProperty name="user" property="age" value="20" />
이름 : <jsp:getProperty name="user" property="name"/>
나이 : <jsp:getProperty name="user" property="age"/>
JSP 액션 태그로 JavaBean 사용하기
1. 객체 생성
<jsp:useBean>으로 객체를 생성한다.id: JSP 페이지에서 사용할 Bean의 이름(식별자)class: 사용할 JavaBean 클래스의 경로scope: Bean의 유효 범위
| scope | 범위 |
|---|---|
| page | 현재 페이지에서만 유효 |
| request | 요청이 처리될 때까지 유효 |
| session | 웹 브라우저가 열려있는 동안 유효 |
| application | 웹 어플리케이션이 동작하는 동안에 유효 |
<jsp:useBean id="user" class="com.example.User" scope="request" />
2. 객체의 속성 값 설정
<jsp:setProperty>로 객체의 속성에 값을 넣는다.name: Bean의 이름(id)property: 객체 안의 속성 이름value: 속성에 넣을 값
- Java 클래스 내의 Setter와 유사하다.
<jsp:setProperty name="user" property="name" value="park" />
<jsp:setProperty name="user" property="age" value="20" />
3. 객체의 속성 값 가져오기
<jsp:getProperty>로 객체의 속성 값을 가져올 수 있다.name: Bean의 이름(id)property: 객체의 속성 이름
- Java 클래스 내의 Getter와 유사하다.
<jsp:getProperty name="user" property="name"/>
<jsp:getProperty name="user" property="age"/>